草庐IT

leetcode 413. Arithmetic Slices 等差数列划分

全部标签

LeetCode:217(Python)—— 存在重复元素(简单)

存在重复元素概述:给你一个整数数组nums。如果任一值在数组中出现至少两次,返回true;如果数组中每个元素互不相同,返回false。输入:nums=[1,2,3,1]输出:true输入:nums=[1,2,3,4]输出:false输入:nums=[1,1,1,3,3,4,3,2,4,2]输出:true方法一:Counter思路:用Counter方法统计出现的次数,然后返回最大值进行判断即可。#Counter方法#用Counter方法统计出现的次数,然后返回最大值进行判断即可。classSolution:defcontainsDuplicate(self,nums:List[int])->bo

Leetcode.1125 最小的必要团队

题目链接Leetcode.1125最小的必要团队Rating:2251题目描述作为项目经理,你规划了一份需求的技能清单req_skills,并打算从备选人员名单people中选出些人组成一个「必要团队」(编号为i的备选人员people[i]含有一份该备选人员掌握的技能列表)。所谓「必要团队」,就是在这个团队中,对于所需求的技能列表req_skills中列出的每项技能,团队中至少有一名成员已经掌握。可以用每个人的编号来表示团队中的成员:例如,团队team=[0,1,3]表示掌握技能分别为people[0],people[1],和people[3]的备选人员。请你返回任一规模最小的必要团队,团队成

Leetcode笔记3

15.三数之和题目链接排序+双指针(C++)排序,方便去重固定一个数字nums[k],使用双指针i,j。i从k+1开始,j从n-1开始不断向中间逼近直到i>=j,然后k++。判断nums[i]+nums[j]+nums[k]是否等于0,大于0或者小于0。classSolution{public:vector>threeSum(vector&nums){intk=0,n=nums.size();vector>ans;sort(nums.begin(),nums.end());if(ntemp(3);while(ki&&nums[j]==nums[j-1]){j--;}i++;j--;}elsei

代码随想录算法训练营第三天 | LeetCode 203.移除链表元素 、​LeetCode 707.设计链表、LeetCode 206.反转链表

LeetCode 203.移除链表元素classSolution{public:ListNode*removeElements(ListNode*head,intval){//删除头结点while(head!=NULL&&head->val==val){//注意这里不是ifListNode*tmp=head;head=head->next;deletetmp;}//删除非头结点ListNode*cur=head;while(cur!=NULL&&cur->next!=NULL){if(cur->next->val==val){ListNode*tmp=cur->next;cur->next=c

Leetcode.1654 到家的最少跳跃次数

题目链接Leetcode.1654到家的最少跳跃次数Rating:2124题目描述有一只跳蚤的家在数轴上的位置x处。请你帮助它从位置0出发,到达它的家。跳蚤跳跃的规则如下:它可以往前跳恰好a个位置(即往右跳)。它可以往后跳恰好b个位置(即往左跳)。它不能连续往后跳2次。它不能跳到任何forbidden数组中的位置。跳蚤可以往前跳超过它的家的位置,但是它不能跳到负整数的位置。给你一个整数数组forbidden,其中forbidden[i]是跳蚤不能跳到的位置,同时给你整数a,b和x,请你返回跳蚤到家的最少跳跃次数。如果没有恰好到达x的可行方案,请你返回-1。示例1:输入:forbidden=[1

Leetcode笔记2

8.字符串转换整数(atoi)题目链接自动机思路字符串处理的题目往往涉及复杂的流程以及条件情况,如果直接上手写程序,一不小心就会写出极其臃肿的代码。因此,为了有条理地分析每个输入字符的处理方法,我们可以使用自动机这个概念:我们的程序在每个时刻有一个状态s,每次从序列中输入一个字符c,并根据字符c转移到下一个状态s'。这样,我们只需要建立一个覆盖所有情况的从s与c映射到s'的表格即可解决题目中的问题。算法本题可以建立如下图所示的自动机:image.png状态表(略)接下来编程部分就非常简单了:我们只需要把状态转换表抄进代码即可。另外自动机也需要记录当前已经输入的数字,只要在s'为in_numbe

c# - 在第一个空格处划分字符串

对于聊天机器人,如果有人说“!say”,它会在空格后背诵你说的话。简单。示例输入:!saythisisatest期望的输出:thisisatest为了论证,字符串可以表示为s。s.Split('')产生一个数组。s.Split('')[1]只是空格后的第一个单词,关于完全划分并得到第一个空格后的所有个单词有什么想法吗?我试过类似的方法:s.Split('');for(inti=0;i>s.Length;i++){if(s[i]=="!say"){s[i]="";}}输入是:!saythisisatest输出:!say这显然不是我想要的:p(我知道这个问题有几个答案,但在我搜索的地方没有

leetcode刷题之背包问题(01背包)

01背包概念:有n件物品和一个最多能背重量为w的背包。第i件物品的重量是weight[i]weight[i]weight[i],得到的价值是value[i]value[i]value[i]。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。方法1:暴力回溯法方法2:动态规划三个物品,物品的重量分别为{1,3,4},物品的价值分别为{15,20,30};背包最大容量为4。(一)二维dp数组确定dp数组以及下标的含义:dp[i][j]dp[i][j]dp[i][j]代表从下标为[0,i]的物品中任意取,放到容量为j的背包里,价值总和最大是多少。确定递推公式不放物品i的最大价值:dp[i

LeetCode:376. 摆动序列——说什么贪心和动规~

🍎道阻且长,行则将至。🍓🌻算法,不如说它是一种思考方式🍀算法专栏:👉🏻123一、🌱376.摆动序列题目描述:如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。例如,[1,7,4,9,2,5]是一个摆动序列,因为差值(6,-3,5,-7,3)是正负交替出现的。相反,[1,4,7,2,5]和[1,7,4,5,5]不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。子序列可以通过从原始序列中删除一些(也可以不删除)元素来获得,剩下的元素保持其原始

蓝桥杯——等差素数列(c语言)

目录 一、题目描述二、解题思路整体思路:细分每个实现步骤:步骤1、先满足必要条件素数,需要判断数是不是素数步骤2、判断是否存在10个素数且公差为d,怎样方便每个d的判断呢?步骤3、遍历素数时,如何判断素数之间是否满足等差数列的关系? 步骤4、注意限制条件,长度为10的等差素数数列,如何应用呢?步骤5、节省程序的执行时间,如果找到满足条件的公差的首项,可以不用继续判断,直接跳出。步骤6,题意找到第一个满足条件的公差即最小的公差,不必继续遍历查找满足十个等差素数数列的公差,三、完整代码实现:运行结果:210自己理解,如有错误,欢迎指正!如有更好解法,留在评论区,互相学习!一、题目描述本题为填空题,